import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
 * JDBC快速入门
 */
public class Demo01JdbcBasic {
    /**
     * 1. DriverManager：驱动管理对象:
     *      获取数据库的连接:
     *      static Connection getConnection(String url, String user, String password)
     *         url参数:  jdbc:mysql://ip地址(域名):端口号/数据库名称
     *
     * 2. Connection：数据库连接对象:
     *      1) 创建执行sql的对象:
     *          Statement createStatement()  //获取Statement对象
     *          PreparedStatement prepareStatement(String sql)  //获取PreparedStatement对象
     *      2) 管理事务：
     *          开启事务：setAutoCommit(boolean autoCommit) ：调用该方法设置参数为false，即开启事务
     *          提交事务：commit()
     *          回滚事务：rollback()
     *
     * 3. Statement：执行sql的对象:
     *      1) 执行sql
     *      boolean execute(String sql) ：可以执行任意的sql语句 了解
     *      ResultSet executeQuery(String sql)  ：执行DQL（select)语句
     * 		int executeUpdate(String sql) ：执行DML（insert、update、delete）语句、DDL(create，alter、drop)语句
     * 		--返回值：影响的行数，可以通过这个影响的行数判断是否执行成功 返回值>0的则执行成功，反之，则失败。
     *
     * 4. ResultSet：结果集对象,封装查询结果
            boolean next(): 游标向下移动一行，判断当前行是否是最后一行末尾(是否有数据)，如果是，则返回false，如果不是则返回true
     * 		getXxx(参数):获取数据,  如： int getInt() ,	String getString()
     *
     * 5. PreparedStatement：执行sql的对象:
     *      预编译的SQL：参数使用?作为占位符
     *      注意：后期都会使用PreparedStatement来完成增删改查的所有操作
     * 			1. 可以防止SQL注入
     * 			2. 效率更高
     */
    public static void main(String[] args) throws Exception{
        //1. 导入驱动jar包

        //2.注册驱动(mysql 5之后的驱动jar包可以省略注册驱动的步骤)
//         Class.forName("com.mysql.jdbc.Driver");
//        DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //同上一样

        //3.获取数据库连接对象
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");
//        Connection conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root"); //本机地址,默认端口号可以简写url

        //4.定义sql语句
//        String sql = "update account set balance = 2000 where id = 1";
        String sql = "update emp set salary = 12000 where id = 1001";

        //5.获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
        ///获取 PreparedStatement 对象
//       PreparedStatement preparedStatement = conn.prepareStatement(sql);

        //6.执行sql
        int count = stmt.executeUpdate(sql);

        //7.处理结果
        System.out.println(count);

        //8.释放资源
        stmt.close();
        conn.close();
    }
}
